package ael.imarkket.Library;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import ael.imarkket.R;
import android.content.Context;

public class ApiJSON {

	private static ApiJSON	instance	= new ApiJSON();
	static Context			context;

	public static ApiJSON getInstance(Context ctx) {
		context = ctx;
		return instance;
	}

	// Determinamos el tipo de conexion
	// uso: JSONObject json_send =
	// AppJSON.getInstance(this.context).createJSON();
	public JSONObject createJSON(ArrayList<NameValuePair> ArrayOperation, Context ctx, int ID_APP) {

		// Recorrer el array de operacion que nos ofrece que tipo de operaci�n
		// se ha hecho y que parametros se pasan
		/*
		 * String OPERATION = null; String USERNAME = null; String PASSWORD = null; for (NameValuePair element : ArrayOperation) { // foreach loop if
		 * (element.getName().equals("op")) OPERATION = element.getValue().toString(); if (element.getName().equals("us")) USERNAME = element.getValue().toString(); if
		 * (element.getName().equals("ps")) PASSWORD = element.getValue().toString(); }
		 */
		// Objeto base
		JSONObject json = new JSONObject();

		// Creación del objeto json info_device
		try {
			// Objeto hijo
			JSONObject json_device = new JSONObject();

			// Datos del objeto hijo
			json_device.put("VERSION_RELEASE", android.os.Build.VERSION.RELEASE);
			json_device.put("VERSION_SDK", android.os.Build.VERSION.SDK_INT);
			json_device.put("VERSION_INCREMENTAL", android.os.Build.VERSION.INCREMENTAL);
			json_device.put("DEVICE", android.os.Build.DEVICE);
			json_device.put("MODEL", android.os.Build.MODEL);
			json_device.put("PRODUCT", android.os.Build.PRODUCT);
			json_device.put("BRAND", android.os.Build.BRAND);
			json_device.put("DISPLAY", android.os.Build.DISPLAY);
			json_device.put("CPU_ABI", android.os.Build.CPU_ABI);
			json_device.put("CPU_ABI2", android.os.Build.CPU_ABI2);
			json_device.put("UNKNOWN", android.os.Build.UNKNOWN);
			json_device.put("HARDWARE", android.os.Build.HARDWARE);
			json_device.put("ID", android.os.Build.ID);
			json_device.put("MANUFACTURER", android.os.Build.MANUFACTURER);
			json_device.put("USER", android.os.Build.USER);
			json_device.put("HOST", android.os.Build.HOST);
			json_device.put("OS_VERSION", System.getProperty("os.version"));

			// A�adimos los datos del hijo en el padre
			json.put("INFO_DEVICE", json_device);
		} catch (JSONException e) {
			Logging.getInstance().log(Logging.LOG_ERROR, "json INFO_DEVICE: " + e.toString());
		}

		// Creación del objeto json info_app
		try {
			// Creamos el segundo hijo
			JSONObject json_app = new JSONObject();

			// Datos del segundo hijo
			json_app.put("VERSION", ctx.getString(R.string.app_version));
			json_app.put("NAME", ctx.getString(R.string.app_name));
			json_app.put("ID_APP", ID_APP);

			// A�adimos los datos del segundo hijo al padre
			json.put("INFO_APP", json_app);
		} catch (JSONException e) {
			Logging.getInstance().log(Logging.LOG_ERROR, "json INFO_APP: " + e.toString());
		}

		// Creación del objeto json info_operation
		try {
			// Creamos el tercer hijo
			JSONObject json_operation = new JSONObject();

			// Recorremos el array y lo llenamos con los datos pasados como parámetros
			for (NameValuePair element : ArrayOperation) { // foreach loop
				json_operation.put(element.getName().toString(), element.getValue().toString());
			}

			// Datos del nieto
			// json_operation_params.put("USERNAME", USERNAME);
			// json_operation_params.put("PASSWORD", PASSWORD);

			// Metemos al hijo en su padre
			json.put("INFO_OPERATION", json_operation);
		} catch (JSONException e) {
			Logging.getInstance().log(Logging.LOG_ERROR, "json INFO_OPERATION: " + e.toString());
		}

		return json;

	}
}